package com.jt.www.remote.ins;

import com.jt.www.domain.vo.EduPolicyBean;
import com.jt.www.domain.vo.EduPolicyVO;
import com.jt.www.domain.vo.PolicyDetailVO;
import com.jt.www.model.issue.InsuranceCompanyVO;
import com.jt.www.model.issue.RepushQo;
import com.jt.www.model.param.endorse.AppDetailProParam;
import com.jt.www.model.param.policy.PolicyForAppCaseQo;
import com.jt.www.model.param.policy.RenewalQo;
import com.jt.www.model.pay.BizResQo;
import com.jt.www.model.pay.ResBindQo;
import com.jt.www.model.pay.StatusRecordForOrderVO;
import com.jt.www.model.pay.StatusRecordVO;
import com.jt.www.model.registerCustomer.vo.AchievementListVO;
import com.jt.www.model.remote.ins.CommonApplicationFormVo;
import com.jt.www.model.remote.ins.EduExtendVO;
import com.jt.www.model.remote.ins.InsResultVO;
import com.jt.www.model.renewal.HolderResultVO;
import com.jt.www.model.renewal.PolicyExpirationVO;
import com.jt.www.model.reps.GenericDataResponse;
import com.jt.www.model.reps.GenericListResponse;
import com.jt.www.model.reps.GenericResponse;
import com.jt.www.model.reps.ResponseData;
import com.jt.www.model.torectify.vo.RectifyUpdateQo;
import com.jt.www.model.vo.*;
import com.jt.www.model.vo.endorse.AppDetailProVo;
import com.jt.www.model.vo.endorse.AppFormVO;
import com.jt.www.model.vo.endorse.DetailVo;
import com.jt.www.model.vo.policy.EduIndexMsgVO;
import com.jt.www.model.vo.policy.PolicyFormAppCaseVO;
import com.jt.www.model.vo.policy.PolicyRiskInfoVo;
import com.jt.www.model.vo.policy.RenewalVO;
import com.jt.www.model.vo.promoteBusiness.MsgVo;
import com.jt.www.model.vo.woxuebao.ConfirmAmountVo;
import com.jt.www.model.woxuebao.BdDetailProVo;
import config.FeignConfiguration;
import feign.hystrix.FallbackFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

@FeignClient(value = "ins-svc", url = "${remote.ins_svc_url}",
        configuration = FeignConfiguration.class,
        fallbackFactory = InsClient.FeignClientFallbackFactory.class)
public interface InsClient {

    /**
     * @Description: 投保单列表查询接口
     * @Param:
     * @return:
     * @Author: shalongteng
     * @Date: 2019-06-19
     */
    @PostMapping(value = "/applicationforms/edu",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseData searchAppList(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 我学保投保单列表查询接口
     * @Param:
     * @return:
     * @Author: lq
     * @Date: 2020-04-02
     */
    @PostMapping(value = "/applicationforms/wxb",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<InsResultVO>> searchWxbAppList(@RequestBody @Valid String json) throws Exception;


    /**
     * @Description: 投保单列表查询接口
     * @Param:
     * @return:
     * @Author: shalongteng
     * @Date: 2019-06-19
     */
    @PostMapping(value = "/applicationforms/edu/manager",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseData searchManagerAppList(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 投保单列表合计接口
     */
    @PostMapping(value = "/applicationforms/edu/statistics",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseData searchManagerStatisticsAppList(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 展业端待续保投保单列表查询接口
     * @Param:
     * @return:
     * @Author: lq
     * @Date: 2019-11-20
     */
    @PostMapping(value = "/applicationforms/edu/manager/selectEduPcRenewalList",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseData selectEduPcRenewalList(@RequestBody @Valid String json) throws Exception;


    /**
     * 管理端投保单列表(案件关联保单时使用)
     * @param appForCaseQo
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/applicationforms/edu/manager/selectPolicyForCase",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    GenericListResponse<AppForCaseVO> appilicationsForCase(@RequestBody AppForCaseQo appForCaseQo) throws Exception;

    /**
     * 管理端查询被保险人信息(案件关联保单时使用)
     * @param insuredForCaseQo
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/applicationforms/edu/manager/selectInsuredForCase",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    GenericDataResponse<InsuredForCaseVO> insuredForCase(@RequestBody InsuredForCaseQo insuredForCaseQo) throws Exception;

    /**
     * @Description: 查询即将到期保单
     * @Param:
     * @return:
     * @Author: lq
     * @Date: 2019-08-01
     */
    @PostMapping(value = "/applicationforms/edu/selectPolicyMsg",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<HolderResultVO>> selectPolicyMsg(@RequestBody @Valid String json) throws Exception;

    @GetMapping(value = "/insurance_objects",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseEntity<GenericListResponse<DetailVo>> insuranceObjects(
            @RequestParam(value = "applicationFormCode") String applicationFormCode) throws Exception;


    @PostMapping(value = "/applicationforms/searchAppDetailPro",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseEntity<GenericDataResponse<AppDetailProVo>> searchAppDetailPro(@RequestBody AppDetailProParam param) throws Exception;

    @PostMapping(value = "/bind_resources",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<Map<String,String>>> bindResources(@RequestBody @Valid ResBindQo json) throws Exception;


    @PostMapping(value = "/bind_resources/res",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<Map<String,String>>> getResources(@RequestBody @Valid BizResQo bizResQo) throws Exception;


    @PostMapping(value = "/applicationforms/updateApplicationStatus",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<Map<String,String>>> updateApplicationStatus(@RequestBody @Valid List<StatusRecordVO> json) throws Exception;

    @PostMapping(value = "api/v2/applicationforms/searchAppDetailPro",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseEntity<GenericDataResponse<BdDetailProVo>> searchBdDetailPro(@RequestBody AppDetailProParam param) throws Exception;

    @PostMapping(value = "/policy/edu/selectByPolicyNoAndName",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    GenericListResponse<EduPolicyVO> onlineQuery(@RequestBody EduPolicyBean eduPolicyBean) throws Exception;

    @PostMapping(value = "/policy/searchPolList",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<Map<String, Object>>> checkInsure(@RequestBody String userCode) throws Exception;

    @PostMapping(value = "/applicationforms/confirmAmount",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericDataResponse<Map<String, Object>>> confirmAmount(List<ConfirmAmountVo> confirmAmountVoList) throws Exception;

    @GetMapping(value = "/assembly/generateHtml/{applicationFormCode}/{source}",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String generateHtml(@RequestParam(value = "applicationFormCode") String applicationFormCode,
                        @RequestParam(value = "source") String source) throws Exception;

    @GetMapping(value = "/common/applicationForm/{type}/{bisCode}",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseEntity<GenericListResponse<CommonApplicationFormVo>> applicationForm(@RequestParam(value = "type") String type,
                                                                                 @RequestParam(value = "bisCode") String bisCode) throws Exception;

    @GetMapping(value = "/common/update/{version}",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
   ResponseData commonUpdate(@PathVariable(name = "version")String version,
                             @RequestBody CommonUpdateQo commonUpdateQo) throws Exception;

    /**
     * 根据订单修改投保单号
     * @param json
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/applicationforms/updateApplicationStatusByOrder",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<Map<String,String>>> updateApplicationStatusByOrder(@RequestBody @Valid List<StatusRecordForOrderVO> json) throws Exception;
    /**
     * @Description: 查询pc端所有险种到期保单
     * @Param:
     * @return:
     * @Author: xq.wu
     * @Date: 2020-04-22
     */
    @PostMapping(value = "/applicationforms/edu/selectEduExpiration",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<PolicyExpirationVO>> selectEduExpiration(@RequestBody @Valid String json) throws Exception;
    /**
     * @Description: 查询投保单扩展信息
     */
    @PostMapping(value = "/applicationforms/edu/selectAppFormExtends",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<EduExtendVO>> selectAppFormExtends(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 查询保险标的扩展信息
     */
    @PostMapping(value = "/applicationforms/edu/selectInsObjectExtends",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<EduExtendVO>> selectInsObjectExtends(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 查询被保险人(个人)扩展信息
     */
    @PostMapping(value = "/applicationforms/edu/selectHumanExtends",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<EduExtendVO>> selectHumanExtends(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 查询被保险人(企业)扩展信息
     */
    @PostMapping(value = "/applicationforms/edu/selectCorporationExtends",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<EduExtendVO>> selectCorporationExtends(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 通过保单ID查询资源绑定表
     */
    @PostMapping(value = "/applicationforms/edu/selectBizResByPolicyIds",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<EduExtendVO>> selectBizResByPolicyIds(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 通过保单ID查询资源绑定表
     */
    @PostMapping(value = "/applicationforms/edu/selectBizResByAppIds",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<EduExtendVO>> selectBizResByAppIds(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 通过保单ID查询方案
     */
    @PostMapping(value = "/applicationforms/edu/selectPrograme",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<EduExtendVO>> selectPrograme(@RequestBody @Valid String json) throws Exception;

    /**
     * @Description: 批量补录
     */
    @PostMapping(value = "/applicationforms/edu/postRecordedBatch",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<PostRecordedInsResultVo>> postRecordedBatch(@RequestBody @Valid String json) throws Exception;

    /*
*    出单公司,保单号列表,主要是导出使用,
*    后续页面查询可能会使用到.
 * @Author xq.wu
 * @Date 14:37 2019/10/29
 * @Param [json]
 * @return org.springframework.http.ResponseEntity<com.jt.www.model.reps.GenericListResponse<com.jt.www.model.issue.InsuranceCompanyVO>>
 **/
    @PostMapping(value = "/companies", produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<InsuranceCompanyVO>> getIssueBackPolicyNo(@RequestBody @Valid String json) throws Exception;


    @PostMapping(value = "/companies/getBatchBackPolicyNo", produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<InsuranceCompanyVO>> getBatchBackPolicyNo(@RequestBody @Valid String json) throws Exception;

    /**
     * 根据投保单号获取流水号
     * @param appCode
     * @return
     * @throws Exception
     */
    @GetMapping(value = "/applicationforms/selectSerialNoByAppCode/{appCode}",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String selectSerialNoByAppCode(
            @RequestParam(value = "appCode") String appCode) throws Exception;

    /**
     * 根据投保单号查询报文失败原因
     * @param applicationFormCode
     * @return
     * @throws Exception
     */
    @GetMapping(value = "/applicationforms/tour/issue/fail/{applicationFormCode}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData tourIssueFail(@RequestParam(value = "applicationFormCode") String applicationFormCode) throws Exception;


    @PostMapping(value="/rectify/update/v1/{accountingType}", produces= {MediaType.APPLICATION_JSON_UTF8_VALUE})
    ResponseEntity<GenericResponse> rectifyUpdate(@PathVariable(value = "accountingType") String accountingType, @RequestBody RectifyUpdateQo rectifyUpdateQo);

    /**
     * @Description: 我学保续保保单列表查询
     */
    @PostMapping(value = "/policy/edu/selectEduRenewalList",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    GenericListResponse<RenewalVO> selectEduRenewalList(@RequestBody RenewalQo renewalQo) throws Exception;

    /**
     * @Description: 索赔小程序保单列表查询
     */
    @PostMapping(value = "/policy/edu/selectEduPolicyForAppCase",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    GenericListResponse<PolicyFormAppCaseVO> selectEduPolicyForAppCase(@RequestBody PolicyForAppCaseQo policyForAppCaseQo) throws Exception;

    /**
     * 根据投保单号, 查询险种列表
     * @param appCode
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/risks/{appCode}",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    GenericListResponse<PolicyRiskInfoVo> selectRiskByAppCode(@PathVariable("appCode") String appCode) throws Exception;

    /**
     * 重发报文
     * @param repushQo
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/issuelog/repush",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    GenericListResponse<String> repush(@RequestBody RepushQo repushQo) throws Exception;

    /**
     * 展业端首页待审核投保单数量查询
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/applicationforms/edu/selectEduAuditAppNum",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseData selectEduAuditAppNum(@RequestBody @Valid String json) throws Exception;

    /**
     * 展业端首页滚动信息查询
     * @return
     * @throws Exception
     */
    @GetMapping(value = "/policy/edu/selectEduPromoteBussnessMsg",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    GenericDataResponse<MsgVo> selectEduPromoteBussnessMsg() throws Exception;

    /**
     * 业务端首页实时保单信息查询
     * @return
     * @throws Exception
     */
    @GetMapping(value = "/policy/edu/selectEduIndexMsg",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    GenericListResponse<EduIndexMsgVO> selectEduIndexMsg() throws Exception;

    /**
     * @Description: 业绩查询
     * @Param:
     * @return:
     * @Author: lq
     * @Date: 2020-03-09
     */
    @PostMapping(value = "/policy/edu/selectEduAchievementList",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseEntity<GenericListResponse<AchievementListVO>> selectEduAchievementList(@RequestBody @Valid String json) throws Exception;

    /**
     * 投保单号查询字段
     * @return
     * @throws Exception
     */
    @GetMapping(value = "/applicationforms/queryAppMsg/{appCode}",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    GenericDataResponse<AppFormVO> queryAppMsg(@PathVariable("appCode") String appCode) throws Exception;

    /**
     * 投保单号查询字段
     * @return
     * @throws Exception
     */
    @GetMapping(value = "/policy/{policyNo}",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    GenericDataResponse<PolicyDetailVO> policyDetail(@PathVariable("policyNo") String policyNo) throws Exception;


    /**
     * 重复性校验
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/applicationforms/edu/repeatInsurance",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseData repeatInsurance(@RequestBody @Valid String json) throws Exception;
   /*
   *  获取第一次出单发送时间
    * @Author xq.wu
    * @Date 11:43 2021/1/12
    * @Param [appCode, companyCode]
    * @return com.jt.www.model.reps.ResponseData
    **/
    @GetMapping(value = "/applicationforms/searchIssuePushDate/{appCode}/{companyCode}",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseData searchOrderDetailPro(@PathVariable("appCode") String appCode,@PathVariable("companyCode") String companyCode)throws Exception;

    @PostMapping(value = "/applicationforms/edu/data/statistics", produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = "application/json;charset=UTF-8")
    ResponseData eduDataStatistic(@RequestBody @Valid String json) throws Exception;

    @Component
    class FeignClientFallbackFactory implements FallbackFactory<InsClient> {

        public static final Logger log = LoggerFactory.getLogger(FeignClientFallbackFactory.class);

        @Override
        public InsClient create(Throwable cause) {
            return new InsClient() {
                @Override
                public ResponseData searchAppList(String insParamVo) throws Exception {
                    log.error("远程获取保单列表失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<InsResultVO>> searchWxbAppList(String json) throws Exception {
                    log.error("远程获取我学保保单列表失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseData searchManagerAppList(String json) throws Exception {
                    log.error("远程获取管理端保单列表接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseData searchManagerStatisticsAppList(String json) throws Exception {
                    log.error("远程获取教育合计接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseData selectEduPcRenewalList(String json) throws Exception {
                    log.error("远程获取展业端待续保保单列表接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public String selectSerialNoByAppCode(String appCode) throws Exception {
                    log.error("远程获取流水号失败,fallback reason:",cause);
                    return null;
                }


                @Override
                public ResponseData tourIssueFail(String applicationFormCode) throws Exception {
                    log.error("远程调用投保中心，查询报文失败原因错误,fallback reason:",cause);
                    return null;
                }

                @Override
                public GenericListResponse<AppForCaseVO> appilicationsForCase(AppForCaseQo appForCaseQo) throws Exception {
                    log.error("远程获取管理端保单列表接口(案件关联保单时使用)失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public GenericDataResponse<InsuredForCaseVO> insuredForCase(InsuredForCaseQo insuredForCaseQo) throws Exception {
                    log.error("远程获取被保险人信息接口(案件关联保单时使用)失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<InsuranceCompanyVO>> getIssueBackPolicyNo(String json) throws Exception {
                    log.error("远程调用投保中心，查询跟单号失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<InsuranceCompanyVO>> getBatchBackPolicyNo(String json) throws Exception {
                    log.error("远程调用投保中心,批量查询跟单号失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<HolderResultVO>> selectPolicyMsg(String json) throws Exception {
                    log.error("远程获取管理端即将到期保单列表接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<DetailVo>> insuranceObjects(String applicationFormCode) {
                    log.error("标的查询失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericDataResponse<AppDetailProVo>> searchAppDetailPro(AppDetailProParam param) {
                    log.error("获取投保单详情失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<Map<String,String>>> bindResources(ResBindQo json) throws Exception {
                    log.error("绑定失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<Map<String, String>>> getResources(BizResQo bizResQo) throws Exception {
                    log.error("根据投保单号, 保单号, 订单号, 查询资源失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<Map<String, String>>> updateApplicationStatus(List<StatusRecordVO> json) throws Exception {
                    log.error("投保单状态更新失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericDataResponse<BdDetailProVo>> searchBdDetailPro(AppDetailProParam param) throws Exception {
                    log.error("获取投保单详情失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public GenericListResponse<EduPolicyVO> onlineQuery (EduPolicyBean eduPolicyBean) throws Exception {
                    log.error("获取保单列表失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<Map<String, Object>>> checkInsure(@RequestBody String userCode) throws Exception{

                    log.error("获取保单列表失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericDataResponse<Map<String, Object>>> confirmAmount(List<ConfirmAmountVo> confirmAmountVoList) throws Exception {
                    log.error("远程调用到账确认接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public String generateHtml(String applicationFormCode,String source) {
                    log.error("远程调用投保单html失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<CommonApplicationFormVo>> applicationForm(String type, String bisCode) throws Exception {
                    log.error("远程查询订单列表失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseData commonUpdate(String version, CommonUpdateQo commonUpdateQo) throws Exception {
                    log.error("远程修改投保单信息失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<Map<String, String>>> updateApplicationStatusByOrder(List<StatusRecordForOrderVO> json) throws Exception {
                    log.error("根据订单更新状态失败,,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<PolicyExpirationVO>> selectEduExpiration(String json) throws Exception {
                    log.error("远程调用续保列表失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<EduExtendVO>> selectAppFormExtends(String json) throws Exception {
                    log.error("远程调用投保中心，查询投保单扩展信息失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<EduExtendVO>> selectInsObjectExtends(String json) throws Exception {
                    log.error("远程调用投保中心，查询保险标的扩展信息失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<EduExtendVO>> selectHumanExtends(String json) throws Exception {
                    log.error("远程调用投保中心，查询被保险人(个人)扩展信息失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<EduExtendVO>> selectCorporationExtends(String json) throws Exception {
                    log.error("远程调用投保中心，查询被保险人(企业)扩展信息失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<EduExtendVO>> selectBizResByPolicyIds(String json) throws Exception {
                    log.error("远程调用投保中心，通过保单ID查询资源绑定表,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericResponse> rectifyUpdate(String accountingType, RectifyUpdateQo rectifyUpdateQo) {
                    log.error("远程调用投保中心,冲正接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<EduExtendVO>> selectBizResByAppIds(String json) throws Exception {
                    log.error("远程调用投保中心，通过投保单ID查询资源绑定表,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<EduExtendVO>> selectPrograme(String json) throws Exception {
                    log.error("远程调用投保中心，通过保单ID查询方案信息失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<PostRecordedInsResultVo>> postRecordedBatch(String json) throws Exception {
                    log.error("远程调用投保中心，补录接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public GenericListResponse<RenewalVO> selectEduRenewalList(RenewalQo renewalQo) throws Exception {
                    log.error("远程调用投保中心，我学保续保保单列表查询接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public GenericListResponse<PolicyFormAppCaseVO> selectEduPolicyForAppCase(PolicyForAppCaseQo policyForAppCaseQo) throws Exception {
                    log.error("远程调用投保中心，索赔小程序保单列表查询接口失败,fallback reason:",cause);
                    return null;
                }

                @Override
                public GenericListResponse<PolicyRiskInfoVo> selectRiskByAppCode(String appCode) throws Exception {
                    log.error("远程调用投保中心，根据投保单号查询险种列表接口失败",cause);
                    return null;
                }

                @Override
                public GenericListResponse<String> repush(RepushQo repushQo) throws Exception {
                    log.error("远程调用投保中心，重发报文接口失败",cause);
                    return null;
                }

                @Override
                public ResponseData selectEduAuditAppNum(String json) throws Exception {
                    log.error("远程调用投保中心，展业端首页待审核投保单数量查询接口失败",cause);
                    return null;
                }

                @Override
                public GenericDataResponse<MsgVo> selectEduPromoteBussnessMsg() throws Exception {
                    log.error("远程调用投保中心，展业端首页滚动信息查询接口失败",cause);
                    return null;
                }

                @Override
                public GenericListResponse<EduIndexMsgVO> selectEduIndexMsg() throws Exception {
                    log.error("远程调用投保中心，业务端首页实时保单信息查询接口失败",cause);
                    return null;
                }

                @Override
                public ResponseEntity<GenericListResponse<AchievementListVO>> selectEduAchievementList(String json) throws Exception {
                    log.error("远程调用投保中心，管理端业绩查询（推广）查询接口失败",cause);
                    return null;
                }

                @Override
                public GenericDataResponse<AppFormVO> queryAppMsg(String appCode) throws Exception {
                    log.error("远程调用投保中心，投保单号查询字段查询接口失败",cause);
                    return null;
                }

                @Override
                public GenericDataResponse<PolicyDetailVO> policyDetail(String policyNo) throws Exception {
                    log.error("远程调用投保中心，保单详情查询查询接口失败",cause);
                    return null;
                }

                @Override
                public ResponseData repeatInsurance(String json) throws Exception {
                    log.error("远程调用投保中心，重复性校验接口失败",cause);
                    return null;
                }

                @Override
                public ResponseData searchOrderDetailPro(String appCode, String companyCode) throws Exception {
                    log.error("远程调用投保中心，获取第一次出单发送时间失败",cause);
                    return null;
                }

                @Override
                public ResponseData eduDataStatistic(String json) throws Exception {
                    log.error("远程调用投保中心，启东数据大屏获取投保数据",cause);
                    return null;
                }

            };
        }
    }
}
